Jornada de Open Science na Prática
Situação hipotética:
Por que isso acontece?
Antigamente (anos 2000):
Hoje (2025):
O que são:
Vantagens/Desvantagens:
Uso em pesquisa:
O que são:
Analogia útil:
Vantagens:
Docker em Pesquisa:
Conda (Python/R multi-linguagem):
renv (específico para R):
renv.lock registra versões exatasrenv::restore() recria ambienteVantagens/Limitações:
Conclusão:
Por que combinar?
Workflow recomendado:
renv ativorenv::snapshot() cria renv.lockrenv.lock para instalar pacotesO que é:
rocker/rstudio: RStudio Server em containerrocker/verse:4.5.1Benefício final:
renvisoladoO que é:
Funcionalidades principais:
RStudio em Container:
localhost:8787)Foco do curso:
Notebooks na nuvem (básico):
Ambientes gerenciados (intermediário):
Plataformas científicas (avançado):
Relação com Docker:
Nível Mínimo (Módulo 4):
Nível Adequado (Módulos 5-6):
Nível Completo (Este módulo - Padrão Ouro):
Implementação prática:
start.bat/stop.bat (Windows)start.sh/stop.sh (Linux/Mac)Dockerfile + docker-compose.yml incluídosEstrutura no repositório:
article-template/
├── docker/
│ ├── Dockerfile
│ ├── docker-compose.yml
│ ├── start.bat \# Windows
│ ├── stop.bat \# Windows
│ ├── start.sh \# Linux/Mac
│ └── stop.sh \# Linux/Mac
└── renv.lock
O que os scripts fazem:
Uso na prática:
start.batstart.shResultado:
http://127.0.0.x:8787| Solução | Pacotes | R | SO | Bibliotecas Sistema | Nível |
|---|---|---|---|---|---|
| Google Colab | ⚠️ | ❌ | ❌ | ❌ | Básico |
| Posit Cloud | ⚠️ | ⚠️ | ❌ | ❌ | Básico |
| Binder | ✅ | ✅ | ⚠️ | ⚠️ | Intermediário |
| JupyterHub | ✅ | ✅ | ⚠️ | ⚠️ | Intermediário |
| renv | ✅ | ⚠️ | ❌ | ❌ | Intermediário |
| Code Ocean | ✅ | ✅ | ✅ | ✅ | Alto |
| Nextjournal | ✅ | ✅ | ✅ | ✅ | Alto |
| Docker local | ✅ | ✅ | ✅ | ✅ | Completo |
Fase 1: Desenvolvimento (local)
renvrenv::snapshot() continuamenteFase 2: Conteinerização
Dockerfile usando renv.lockFase 3: Compartilhamento
Dockerfile para GitHubPesquisadores reproduzem:
docker build ou docker pull (sem ARTE)docker run → RStudio Server (sem ARTE)Gerenciamento de imagens:
# Baixar imagem do Docker Hub
docker pull rocker/rstudio:4.3.2
# Listar imagens locais
docker images
# Construir imagem do Dockerfile
docker build -t meu-projeto:1.0 .
# Remover imagem
docker rmi meu-projeto:1.0
Gerenciamento de containers:
# Executar container
docker run --rm -p 8787:8787 \
-e PASSWORD=senha123 rocker/verse:4.5.1
# Listar containers em execução
docker ps
# Parar container
docker stop tainer-id>
# Remover container
docker rm tainer-id>
# Fixar versão específica do R
FROM rocker/verse:4.5.1
# Instalar dependências do sistema (se necessário)
RUN apt-get update \&\& apt-get install -y \
libcurl4-openssl-dev \
libssl-dev
# Copiar renv.lock para o container
COPY renv.lock /home/rstudio/renv.lock
# Instalar renv e restaurar pacotes
RUN R -e "install.packages('renv')"
WORKDIR /home/rstudio
RUN R -e "renv::restore()"
# Copiar projeto completo
COPY . /home/rstudio/meu-projeto
# Ajustar permissões
RUN chown -R rstudio:rstudio /home/rstudio
Organização (Módulos 4-6):
Controle de Ambiente (Este módulo):
renv.lock atualizadoDockerfile funcionalCompartilhamento:
Teste final:
Curva de aprendizado:
Requisitos técnicos:
Quando Docker pode ser excessivo:
Quando Docker é essencial:
Documentação oficial:

Controle de Ambiente | Docker + renv